package ControlLayer;
import ModelLayer.*;
import java.util.ArrayList;


/**
 * Write a description of class OrdreCtr here.
 * 
 * @author (Gruppe 1) 
 * @version (17.12.2012)
 */
public class OrdreCtr
{
    // instance variables
    private Ordre o;
    private OrdreContainer oc;
    private static OrdreCtr ordreCtr = null;
    private static OrdreContainer ordreContainer;
    private static kundeBase KundeBase;
    private static KundeBaseCtr kundeBaseCtr;

    /**
     * Constructor for objects of class OrdreCtr
     */
    private OrdreCtr()
    {
        // initialise instance variables
        ordreContainer = OrdreContainer.getInstance();
 
    }
    
    /**
     * Singleton.
     */
    public static OrdreCtr getInstance()
    {
        if(ordreCtr == null) {
            ordreCtr = new OrdreCtr();
        }
        return ordreCtr;
    }
    /**
     * Tilføj vare til ordrecontainer
     * 
     * @param int vareId, int ordreId - finder Ordre og tilføjer vare.
     */
    public void addVareTilOrdre(int vareId, int ordreId)
    {
        Ordre o = ordreContainer.findOrdre(ordreId);
        o.addVare(vareId, 1);
    }
    /**
     * Find ordre vha. id
     * 
     * @return int id - returnere ordre
     */
    public Ordre findOrdre(int id)
    {
        Ordre o = ordreContainer.findOrdre(id);
        if(o!=null) {
            
        }
        return o;
    }
    /**
     * fjern ordre vha. id 
     * 
     * @param int id - fjerner ordre
     */
    public void deleteOrdre(int id)
    {
    boolean deleted = false;
    while(deleted == false){
        if(findOrdre(id) != null) {
                oc.removeOrdre(findOrdre(id));
                deleted = true;
        }
        }
    }
    /**
     * Find kundeliste vha. ArrayList 
     * 
     * @return ArrayList Kunde - Finder kundelisten
     */
    public ArrayList<Kunde> getKundeListe()
    {
        return KundeBase.getKundeListe();
    }
    /**
     * finder ud af status omkring betaling
     * 
     * @return int id - returner id.
     */
    public boolean erBetalt(int id)
    {
        return ordreContainer.findOrdre(id).erBetalt();
    }
    /**
     * bestemmer betaling til ordre.
     * 
     * @param int id, boolean erBetalt - tilføjer betalingsstatus
     */
    public void setBetalt(int id, boolean erBetalt){
        ordreContainer.findOrdre(id).setBetalt(erBetalt);
    }
    /**
     * Finder kunde vha. id.
     * 
     * @return int id - returner kunde. 
     */
    public Kunde getPerson(int id)
    {
        return kundeBaseCtr.getKundeById(id);
    }

}
